package com.cloud.example.config;

import com.cloud.async.business.context.support.StandardAsyncContext;
import com.cloud.async.result.core.factory.StandardResultFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.util.concurrent.Executor;

/**
 * stater自定义配置非默认自动配置
 * @author chengr 2021-11-12
 */
@SpringBootApplication
public class WebAsyncConfiguration {


    @Autowired
    public Executor executor;

    /**
     * 注入容器两种方式
     * 1.自动注入
     * 启动类上使用@EnableWebAsyncConfiguration
     * 参见yml的中的配置进行配置设置全局等待时间（默认1s）及当前数据Map的长度
     * 必须要有一个线程池 参考{@link com.cloud.example.config.ExecutorConfiguration}
     *
     * 2.手动注入
     * 参见 {@link WebAsyncConfiguration#standardAsyncContext()}
     * 其余均不需配置
     * @return
     */
//    @Bean("standardAsyncContext")
//    public StandardAsyncContext standardAsyncContext() {
//        /**
//         * 参数1：线程池
//         * 参数2：结果处理类
//         * 参数3：全局等待时间（默认1s）
//         * 参数4：当前类的Map空间大小
//         */
//        StandardAsyncContext standardAsyncContext = new StandardAsyncContext(
//                executor, new StandardResultFactory(),
//                1000L, 30
//        );
//        return standardAsyncContext;
//    }


}
